Clojure হল একটি JVM (Java Virtual Machine)-ভিত্তিক প্রোগ্রামিং ভাষা, যার মানে হল যে Clojure সহজেই Java API এবং Java লাইব্রেরি ব্যবহার করতে পারে। Clojure এবং Java এর সমন্বয় Clojure প্রোগ্রামারদের Java ইকোসিস্টেমের শক্তি ব্যবহার করতে সক্ষম করে, যেমনঃ জাভা ক্লাস, মেথড, এবং লাইব্রেরি।
Clojure-এ Java API ব্যবহার করা খুবই সহজ, কারণ Clojure এবং Java দুটি একই রUNTIME এর উপর চলে। Clojure তে Java API ব্যবহারের জন্য সাধারণত দুটি পদ্ধতি ব্যবহার করা হয়:
নিচে এই দুইটি পদ্ধতির বিস্তারিত আলোচনা করা হল।
Clojure-এর মধ্যে Java ক্লাস এবং মেথড কল করার জন্য, আপনাকে .
(dot notation) ব্যবহার করতে হবে, যা Java মেথড কলের স্ট্যান্ডার্ড পদ্ধতি। এটি একইভাবে Java থেকে ক্লাস ও মেথড কলের মতো কাজ করে।
String
ক্লাস ব্যবহারClojure থেকে Java-র String
ক্লাসের মেথড কল করা।
(def my-string (new java.lang.String "Hello, Clojure!"))
; String ক্লাসের length() মেথড কল করা
(println (.length my-string)) ; আউটপুট: 15
; String ক্লাসের toUpperCase() মেথড কল করা
(println (.toUpperCase my-string)) ; আউটপুট: "HELLO, CLOJURE!"
এখানে, .length
এবং .toUpperCase
Java এর String
ক্লাসের মেথড, যেগুলো Clojure-এ .
(dot notation) দিয়ে কল করা হয়েছে।
ArrayList
ব্যবহারJava ক্লাস ArrayList
ব্যবহার করে কিছু অপারেশন করা:
(def my-list (java.util.ArrayList.))
; add() মেথড কল করে কিছু আইটেম যোগ করা
(.add my-list "Apple")
(.add my-list "Banana")
(.add my-list "Orange")
; get() মেথড দিয়ে আইটেম গুলি বের করা
(println (.get my-list 0)) ; আউটপুট: "Apple"
(println (.get my-list 1)) ; আউটপুট: "Banana"
(println (.get my-list 2)) ; আউটপুট: "Orange"
এখানে, .add
এবং .get
Java এর ArrayList
ক্লাসের মেথড, যেগুলো Clojure তে ব্যবহার করা হয়েছে।
Clojure-এ Java objects ব্যবহার করার জন্য, Java ক্লাসের কন্সট্রাক্টর কল করতে new
কিওয়ার্ড ব্যবহার করা হয়। এর মাধ্যমে Java objects তৈরি করা যায় এবং Clojure-এ সেগুলোর সাথে কাজ করা সম্ভব হয়।
Date
object তৈরি করা; java.util.Date object তৈরি
(def my-date (java.util.Date.))
; Date object এর toString() মেথড কল করা
(println (.toString my-date)) ; আউটপুট: বর্তমান তারিখ এবং সময়
এখানে, java.util.Date
ক্লাসের কন্সট্রাক্টর দ্বারা একটি নতুন ডেট অবজেক্ট তৈরি করা হয়েছে এবং .toString
মেথড ব্যবহার করা হয়েছে তারিখ এবং সময় প্রিন্ট করতে।
Java তে স্ট্যাটিক মেথড এবং ফিল্ডের সাথে কাজ করতে Clojure-এ .
(dot notation) ব্যবহার করতে হয়। স্ট্যাটিক মেথড বা ফিল্ড কল করতে, ক্লাসের নামের আগে .
ব্যবহার করা হয়।
; Math ক্লাসের static method abs() কল করা
(println (. Math abs -10)) ; আউটপুট: 10
; Math ক্লাসের static field PI কল করা
(println (. Math PI)) ; আউটপুট: 3.141592653589793
এখানে, Math.abs
এবং Math.PI
হল Java ক্লাসের স্ট্যাটিক মেথড এবং স্ট্যাটিক ফিল্ড, যেগুলো Clojure-এ . Math
ব্যবহার করে কল করা হয়েছে।
Clojure তে Java এর Collections Framework ব্যবহার করা খুবই সহজ। Java এর ArrayList
, HashMap
, HashSet
ইত্যাদি ক্লাস গুলি Clojure তে ব্যবহার করা যেতে পারে।
HashMap
ব্যবহার; Java HashMap তৈরি
(def my-map (java.util.HashMap.))
; put() মেথড ব্যবহার করে key-value পেয়ার যোগ করা
(.put my-map "name" "Alice")
(.put my-map "age" 30)
; get() মেথড দিয়ে মান বের করা
(println (.get my-map "name")) ; আউটপুট: "Alice"
(println (.get my-map "age")) ; আউটপুট: 30
এখানে, HashMap
একটি Java ক্লাস যা Clojure তে ব্যবহার করা হয়েছে এবং put
এবং get
মেথডের মাধ্যমে মান যোগ এবং প্রাপ্তি করা হয়েছে।
Clojure তে Java exceptions এর সাথে কাজ করা খুবই সহজ। Clojure তে Java exceptions প্রক্ষেপণ (throw) এবং ধরা (catch) করতে try
এবং catch
ব্যবহার করা হয়, যা Java তে যেমন ব্যবহৃত হয় তেমনি।
(try
(throw (java.lang.Exception. "Something went wrong!"))
(catch java.lang.Exception e
(println "Caught exception: " (.getMessage e))))
এখানে, একটি java.lang.Exception
থ্রো করা হয়েছে এবং catch
ব্লকের মাধ্যমে সেই এক্সসেপশনটি ধরা হয়েছে।
Clojure এবং Java-এর পারস্পরিক ইন্টারঅপারেবিলিটি মূলত নিম্নলিখিত দিকগুলোতে প্রয়োগ হয়:
HashMap
, ArrayList
, HashSet
) ব্যবহার করা যায়।Clojure এবং Java এর মধ্যে পারস্পরিক ইন্টারঅপারেবিলিটি খুবই শক্তিশালী, কারণ Clojure Java Virtual Machine (JVM) এর উপর চলে এবং Java API সহজেই ব্যবহার করা যায়। Clojure তে Java ক্লাস, মেথড, ফিল্ড এবং এক্সসেপশন হ্যান্ডলিং খুবই সহজে একত্রে কাজ করতে পারে, যা Clojure এর ডেভেলপারদের Java এর বিশাল লাইব্রেরি ব্যবহার করার সুবিধা দেয়।
common.read_more